home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / ae / code / ax3.00 / acscon.c < prev    next >
Encoding:
C/C++ Source or Header  |  1980-01-03  |  8.1 KB  |  227 lines

  1. #include "bbs.h"
  2. extern struct myst my_struct;
  3. void AssignAccess(struct DiskObject *dobj);
  4. extern int PagesAllowed;
  5. int newarea[100];
  6. void ConName(char *s,char *d);
  7.  
  8. void ConvertAccess(void)
  9. {
  10.   register int i;
  11.   struct DiskObject *dobj;
  12.   char temp[200];
  13.   char temp3[200];
  14.   PagesAllowed=-1;
  15.   for(i=0;i<100;i++) newacs[i]=0;
  16.   i=0;
  17.     sprintf(temp,"%sACCESS",Cmds->BBSLoc);
  18.     dobj=GetDiskObject(temp);
  19.     if(dobj) AssignAccess(dobj);
  20.   ConName(User.Name,temp3);
  21.    sprintf(temp,"%sACCESS/%s",Cmds->BBSLoc,temp3);
  22.    
  23.     dobj=GetDiskObject(temp);
  24.     if(dobj==NULL)
  25.     {
  26.       sprintf(temp,"%sACCESS/ACS.%d",Cmds->BBSLoc,User.Sec_Status);
  27.       dobj=GetDiskObject(temp); if(dobj) AssignAccess(dobj);
  28.     } else AssignAccess(dobj);
  29.  
  30.   while(i<90)
  31.   {
  32.   if(Cmds->AcLvl[i] && Cmds->AcLvl[i]>0)
  33.   {
  34.     switch(i)
  35.     {
  36. case 20:
  37.            ADD_BIT(ACS_SENTBY_FILES);
  38.            break;
  39.       
  40.       case 21:
  41.            ADD_BIT(ACS_DEFAULT_CHAT_ON);
  42.            break;
  43.       case 22:
  44.            ADD_BIT(ACS_CLEAR_SCREEN_MSG);
  45.            break;
  46.       case 27:
  47.            ADD_BIT(ACS_KEEP_UPLOAD_CREDIT);
  48.            break;
  49.       case 29:
  50.            ADD_BIT(ACS_DO_CALLERSLOG);
  51.            break;
  52.       case 30:
  53.            ADD_BIT(ACS_DO_UD_LOG);
  54.            break;
  55.       
  56.       case 45:
  57.            ADD_BIT(ACS_SCREEN_TO_FRONT); 
  58.            break;
  59.     }
  60.   }
  61.   i++;
  62.  }
  63.   
  64.     ADD_BIT(ACS_JOIN_SUB_CONFERENCE);
  65.     ADD_BIT(ACS_CUSTOMCOMMANDS);
  66.     ADD_BIT(ACS_MSG_EXPERATION);
  67.     ADD_BIT(ACS_MSG_LEVEL);
  68.     if(Sopt->Toggles[14]) ADD_BIT(ACS_WILDCARDS);
  69.     if(User_keys.Userflags & USER_SCRNCLR) ADD_BIT(ACS_CLEAR_SCREEN_MSG);
  70.    ConvertArea();
  71.  
  72. }
  73.  
  74. void AssignAccess(struct DiskObject *dobj)
  75. {
  76.    char **oldtooltypes; char *s;
  77.    int i;
  78.    oldtooltypes=dobj->do_ToolTypes;
  79.  if(s=FindToolType(oldtooltypes,"ACS.OVERIDE_DEFAULTS")) for(i=0;i<90;i++) newacs[i]=0;
  80.  
  81.        if(s=FindToolType(oldtooltypes,"ACS.ACCOUNT_EDITING"    ))ADD_BIT(ACS_ACCOUNT_EDITING);
  82.        if(s=FindToolType(oldtooltypes,"ACS.COMMENT_TO_SYSOP"   ))ADD_BIT(ACS_COMMENT_TO_SYSOP); 
  83.        if(s=FindToolType(oldtooltypes,"ACS.DOWNLOAD"           ))ADD_BIT(ACS_DOWNLOAD); 
  84.        if(s=FindToolType(oldtooltypes,"ACS.ENTER_MESSAGE"      ))ADD_BIT(ACS_ENTER_MESSAGE); 
  85.        if(s=FindToolType(oldtooltypes,"ACS.FILE_LISTINGS"      ))ADD_BIT(ACS_FILE_LISTINGS); 
  86.        if(s=FindToolType(oldtooltypes,"ACS.JOIN_CONFERENCE"    ))ADD_BIT(ACS_JOIN_CONFERENCE); 
  87.        if(s=FindToolType(oldtooltypes,"ACS.NEW_FILES_SINCE"    ))ADD_BIT(ACS_NEW_FILES_SINCE); 
  88.        if(s=FindToolType(oldtooltypes,"ACS.PAGE_SYSOP"         ))ADD_BIT(ACS_PAGE_SYSOP); 
  89.        if(s=FindToolType(oldtooltypes,"ACS.READ_MESSAGE"       ))ADD_BIT(ACS_READ_MSG); 
  90.        if(s=FindToolType(oldtooltypes,"ACS.DISPLAY_USER_STATS" ))ADD_BIT(ACS_DISPLAY_USER_STATS); 
  91.        if(s=FindToolType(oldtooltypes,"ACS.UPLOAD"             ))ADD_BIT(ACS_UPLOAD); 
  92.        if(s=FindToolType(oldtooltypes,"ACS.VIEW_A_FILE"        ))ADD_BIT(ACS_VIEW_A_FILE); 
  93.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_INFO"     ))ADD_BIT(ACS_EDIT_USER_INFO); 
  94.        if(s=FindToolType(oldtooltypes,"ACS.REMOTE_SHELL"       ))ADD_BIT(ACS_REMOTE_SHELL); 
  95.        if(s=FindToolType(oldtooltypes,"ACS.ZIPPY_TEXT_SEARCH"  ))ADD_BIT(ACS_ZIPPY_TEXT_SEARCH); 
  96.        if(s=FindToolType(oldtooltypes,"ACS.OVERIDE_CHAT"       ))ADD_BIT(ACS_OVERRIDE_CHAT); 
  97.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_NAME"     ))ADD_BIT(ACS_EDIT_USER_NAME); 
  98.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_LOCATION" ))ADD_BIT(ACS_EDIT_USER_LOCATION); 
  99.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_PHONE_NUMBER"  ))ADD_BIT(ACS_EDIT_PHONE_NUMBER); 
  100.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_PASSWORD"      ))ADD_BIT(ACS_EDIT_PASSWORD); 
  101.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_READ"         ))ADD_BIT(ACS_SYSOP_READ); 
  102.        if(s=FindToolType(oldtooltypes,"ACS.EALL_MESSAGES"      ))ADD_BIT(ACS_EALL_LEVEL); 
  103.        if(s=FindToolType(oldtooltypes,"ACS.DUPE_FILECHECK"     ))ADD_BIT(ACS_DUPE_FILECHECK); 
  104.        if(s=FindToolType(oldtooltypes,"ACS.READ_BULLETINS"     ))ADD_BIT(ACS_BULLETINS); 
  105.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_DOWNLOAD"     ))ADD_BIT(ACS_SYSOP_DOWNLOAD);
  106.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_VIEW"         ))ADD_BIT(ACS_SYSOP_VIEW);
  107.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_READ"         ))ADD_BIT(ACS_SYSOP_READ);
  108.        if(s=FindToolType(oldtooltypes,"ACS.FREE_RESUMING"      ))ADD_BIT(ACS_ALLOW_FREE_RESUMING);
  109.        if(s=FindToolType(oldtooltypes,"ACS.MESSAGE_EDIT"       ))ADD_BIT(ACS_MSG_EDIT);
  110.        if(s=FindToolType(oldtooltypes,"ACS.LIST_NODES"         ))ADD_BIT(ACS_NODE_LIST);
  111.        if(s=FindToolType(oldtooltypes,"ACS.DELETE_MESSAGE"     ))ADD_BIT(ACS_DELETE_MSG);
  112.        if(s=FindToolType(oldtooltypes,"ACS.ATTACH_FILES"       ))ADD_BIT(ACS_ATTACH_FILES);
  113.        if(s=FindToolType(oldtooltypes,"ACS.ZOOM_MAIL"          ))ADD_BIT(ACS_ZOOM_MAIL);
  114.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_DIRS"          ))ADD_BIT(ACS_EDIT_DIRS);
  115.        if(s=FindToolType(oldtooltypes,"ACS.BREAK_CHAT"         ))ADD_BIT(ACS_BREAK_CHAT);
  116.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_COMMANDS"     ))ADD_BIT(ACS_SYSOP_COMMANDS);
  117.        if(s=FindToolType(oldtooltypes,"ACS.WHO_IS_ONLINE"      ))ADD_BIT(ACS_WHO_IS_ONLINE);
  118.        if(s=FindToolType(oldtooltypes,"ACS.QUIET_NODE"         ))ADD_BIT(ACS_QUIET_NODE);
  119.        if(s=FindToolType(oldtooltypes,"ACS.EDIT_FILES"         ))ADD_BIT(ACS_EDIT_ANY);
  120.        if(s=FindToolType(oldtooltypes,"ACS.OVERRIDE_TIMES"     ))ADD_BIT(ACS_OVERRIDE_TIMES);
  121.        if(s=FindToolType(oldtooltypes,"ACS.RELOGON"     ))ADD_BIT(ACS_RELOGON);
  122.        if(s=FindToolType(oldtooltypes,"ACS.ULSTATS"     ))ADD_BIT(ACS_ULSTATS);
  123.        if(s=FindToolType(oldtooltypes,"ACS.XPR_RECEIVE"     ))ADD_BIT(ACS_XPR_RECEIVE);
  124.        if(s=FindToolType(oldtooltypes,"ACS.XPR_SEND"     ))ADD_BIT(ACS_XPR_SEND);
  125.        if(s=FindToolType(oldtooltypes,"ACS.CONFERENCE_ACCOUNTING")) ADD_BIT(ACS_CONFERENCE_ACCOUNTING); 
  126.        if(s=FindToolType(oldtooltypes,"ACS.SYSOP_COMMANDS"         ))ADD_BIT(ACS_SYSOP_COMMANDS);
  127.        if(s=FindToolType(oldtooltypes,"ACS.PRI_MSGFILES"         ))ADD_BIT(ACS_PRI_MSGFILES);
  128.        if(s=FindToolType(oldtooltypes,"ACS.PUB_MSGFILES"         ))ADD_BIT(ACS_PUB_MSGFILES);
  129.        if(s=FindToolType(oldtooltypes,"ACS.MAX_PAGES")) PagesAllowed=atoi(s);
  130.        if(s=FindToolType(oldtooltypes,"ACS.FULL_EDIT")) ADD_BIT(ACS_FULLEDIT);
  131.        FreeDiskObject(dobj);
  132. }
  133. void ConvertArea(void)
  134. {
  135.    register int i;
  136.    struct DiskObject *dobj;
  137.    char **oldtooltypes;
  138.    char temp[100];
  139.    i=0; 
  140.    for(i=0;i<100;i++) newarea[i]=0;
  141.    sprintf(temp,"%sACCESS/AREA.%s",Cmds->BBSLoc,User.Conference_Access);
  142.    if(dobj=GetDiskObject(temp))
  143.    {
  144.       oldtooltypes=dobj->do_ToolTypes;
  145.       for(i=0;i<999;i++)
  146.       {
  147.         sprintf(temp,"CONF.%d",i+1);
  148.         if(FindToolType(oldtooltypes,temp))
  149.         { AddAreaBit(i); }
  150.       }
  151.       FreeDiskObject(dobj);
  152.       return;
  153.    }
  154.   for(i=0;i<999;i++) RemAreaBit(i);
  155.   AddAreaBit(0);
  156. }
  157.       
  158. void ADD_BIT(int bitnum)
  159. {
  160.   if(!(bitnum%16))
  161.   {
  162.     newacs[bitnum/16] |= 1;
  163.     return;
  164.   }
  165.     newacs[bitnum/16] |= (1<<(bitnum%16));
  166. }
  167. void REM_BIT(int bitnum)
  168. {
  169.   if(!(bitnum%16))
  170.   {
  171.     newacs[bitnum/16] ^= 1;
  172.     return;
  173.   }
  174.     newacs[bitnum/16] ^= (1<<(bitnum%16));
  175. }
  176. BOOL GET_BIT(int bitnum)
  177. {
  178.   if(!(bitnum%16))
  179.   {
  180.     if((newacs[bitnum/16] & 1)) return(1);else return(0);
  181.   }
  182.     if((newacs[bitnum/16] & (1<<(bitnum%16)))) return(1); else return(0);
  183. }
  184.  
  185. void AddAreaBit(int bitnum)
  186. {
  187.   if(!(bitnum%16))
  188.   {
  189.     newarea[bitnum/16] |= 1;
  190.     return;
  191.   }
  192.     newarea[bitnum/16] |= (1<<(bitnum%16));
  193. }
  194. void RemAreaBit(int bitnum)
  195. {
  196.   if(!(bitnum%16))
  197.   {
  198.     newarea[bitnum/16] ^= 1;
  199.     return;
  200.   }
  201.     newarea[bitnum/16] ^= (1<<(bitnum%16));
  202. }
  203. BOOL GetAreaBit(int bitnum)
  204. {
  205.   if(!(bitnum%16))
  206.   {
  207.     if((newarea[bitnum/16] & 1)) return(1);else return(0);
  208.   }
  209.     if((newarea[bitnum/16] & (1<<(bitnum%16)))) return(1); else return(0);
  210. }
  211.  
  212. void ConName(char *s,char *d)
  213. {
  214.   register int i=0;
  215.   strcpy(d,s);
  216.   while(*(s+i)!='\0')
  217.   {
  218.     if(*(s+i)=='%') *(d+i)='_';
  219.     if(*(s+i)=='#') *(d+i)='_';
  220.     if(*(s+i)=='?') *(d+i)='_';
  221.     if(*(s+i)=='/') *(d+i)='_';
  222.     if(*(s+i)=='(') *(d+i)='_';
  223.     if(*(s+i)==')') *(d+i)='_';
  224.     i++;
  225.   }
  226. }
  227.